import operator

def sep(label=''):
    '''
    Utility function to print separator lines.
    :param label: Optional label
    :return:
    '''
    print('-' * 16, label, '-' * 16, sep='')


# （二）创建funct的源码文件，按要求构建函数，实现给定的功能：（３0分）
# 1．构建函数来实现球星信息的收集,参数为关键字可变长参数。（1５分）
sep(1)
print('1．构建函数来实现球星信息的收集,参数为关键字可变长参数。（1５分）')
# （1）函数名：myStar
# （2）参数：关键字可变长参数kwargs；
# （3）返回值：无；
# （4）功能介绍：
# ①先用for循环遍历kwargs中所有的键；
# ②再将kwargs中所有的值保存到列表slist中并输出slist；
# ③遍历kwargs中所有的键值对；


def myStar(**kwargs):
    '''关键字可变长参数kwargs考试函数'''
    # ①先用for循环遍历kwargs中所有的键；
    print('用for循环遍历kwargs中所有的键:')
    for k in kwargs:
        print(k, end=', ')
    print()
    # ②再将kwargs中所有的值保存到列表slist中并输出slist；
    print('将kwargs中所有的值保存到列表slist中并输出slist')
    slist = list(kwargs.values())
    print(slist)
    # ③遍历kwargs中所有的键值对；
    print('遍历kwargs中所有的键值对')
    for k, v in kwargs.items():
        print(f'键"{k}", 值"{v}"')
    print()


# (5)用以下方式调用：
# myStar（name＝“马拉多纳”，age＝18，country＝“阿根廷”,prof=“足球球员”）
myStar(name='马拉多纳', age=18, country='阿根廷', prof='足球球员')

# 2. 构建函数来实现八维影院。（1５分）
sep(2)
print('2. 构建函数来实现八维影院。（1５分）')
# （1）将下列信息保存到嵌套列表Films中：
# '智取威虎山', 30；'第一滴血', １0； '大圣归来', 20； '哪吒', 50
print('（1）将下列信息保存到嵌套列表Films中：')
Films = [['智取威虎山', 30], ['第一滴血', 10], ['大圣归来', 20], ['哪吒', 50]]

# （2）定义函数addfm()，实现向列表中增加电影功能；调用addfm(‘复仇者联盟’, 55), 实现电影加入, 并按以下格式遍历查看：
print('（2）定义函数addfm()，实现向列表中增加电影功能；调用addfm(‘复仇者联盟’, 55), 实现电影加入, 并按以下格式遍历查看：')


def addfm(xname, xprice):
    '''实现电影加入, 并按格式遍历查看'''
    Films.append([xname, xprice])
    n = 1
    for xpair in Films:
        print(f'{n} {xpair[0]} {xpair[1]}')
        n += 1


addfm('复仇者联盟', 55)

# （3）定义函数pricefm()；按价格从低到高的顺序遍历所有的电影
print('（3）定义函数pricefm()；按价格从低到高的顺序遍历所有的电影')


def pricefm():
    '''按价格从低到高的顺序遍历所有的电影'''
    n = 1
    for xpair in sorted(Films, key=operator.itemgetter(1)):
        print(f'{n} {xpair[0]} {xpair[1]}')
        n += 1


pricefm()

# （4）定义函数menu()；按以下方式显示界面
print('（4）定义函数menu()；按以下方式显示界面')


def menu():
    print('''\
-----欢迎光临八维影院-----
1. 增加电影信息
2. 按价格递增查看电影
3. 选择电影
4. 退出影院
''')


menu()

# （５）实现功能：选择1时，调用addfm函数；选择2时，调用pricefm函数；选择3时pass; 选择4时退出。
print('（５）实现功能：选择1时，调用addfm函数；选择2时，调用pricefm函数；选择3时pass; 选择4时退出。')


def xrun():
    while True:
        menu()
        xin = int(input('请选择：').strip())
        if 1 == xin:
            print('添加电影')
            xname = input('请输入要添加电影的名字: ').strip()
            xprice = int(input('请输入价格: '))
            addfm(xname, xprice)
        elif 2 == xin:
            print('按价格递增查看电影')
            pricefm()
        elif 3 == xin:
            print('暂不支持选择电影')
            pass
        elif 4 == xin:
            print('再见！')
            break
        else:
            print('请按菜单序号进行选择！')


xrun()
